(function() {
  var get_rules;

  get_rules = function(form, type) {
    var amt_max, fee, fix, index, item, max, min, rules, _i, _len, _ref;
    rules = [];
    _ref = form.find(".fields.rule." + type);
    for (index = _i = 0, _len = _ref.length; _i < _len; index = ++_i) {
      item = _ref[index];
      if (!$(item).is(':visible')) {
        continue;
      }
      fix = $(item).find('[name=fix]').val() === 'true';
      amt_max = parseFloat($(item).find('[name=amt_max]').val());
      fee = parseFloat($(item).find('[name=fee]').val());
      min = parseFloat($(item).find('[name=min]').val());
      max = parseFloat($(item).find('[name=max]').val());
      if (isNaN(amt_max)) {
        alert("第 " + (index + 1) + "  行的 消费金额上限 无效...");
        return null;
      }
      if (isNaN(fee)) {
        alert("第 " + (index + 1) + "  行的 手续费 无效...");
        return null;
      }
      if (fix) {
        if (amt_max > 0.0 && fee >= amt_max) {
          alert("第 " + (index + 1) + "  行的 手续费 收取费用不能超出 消费金额上限...");
          return null;
        }
        min = 0.0;
        max = 0.0;
      } else {
        if (fee > 10.0) {
          alert("第 " + (index + 1) + "  行的 手续费 收取比例不允许超出 10%...");
          return null;
        }
        if (isNaN(min)) {
          alert("第 " + (index + 1) + "  行的 保底金额 无效...");
          return null;
        }
        if (amt_max > 0 && min >= amt_max) {
          alert("第 " + (index + 1) + "  行的 保底金额 不能大于或等于 消费金额上限...");
          return null;
        }
        if (isNaN(max)) {
          alert("第 " + (index + 1) + "  行的 封顶金额 无效...");
          return null;
        }
        if (amt_max > 0 && min >= amt_max) {
          alert("第 " + (index + 1) + "  行的 封顶金额 不能大于或等于 消费金额上限...");
          return null;
        }
        if (min > 0.0 && max > 0.0 && min > max) {
          alert("第 " + (index + 1) + "  行的 保底金额 不能大于 封顶金额...");
          return null;
        }
      }
      rules.push({
        amt_max: amt_max,
        fix: fix,
        fee: fee,
        min: min,
        max: max
      });
    }
    return rules;
  };

  $(function() {
    var fields, form, index, rule, rules, type, _i, _j, _len, _len1, _ref;
    form = $('form.main');
    form.form({
      inline: true,
      fields: {
        name: 'empty'
      }
    });
    form.find('i#add').click(function() {
      var fields;
      fields = $(this).parents('.fields');
      while (true) {
        fields = $(fields).next('.fields.rule');
        if (fields.length === 0) {
          alert('不能再增加更多行，已经达到上限');
          return;
        }
        if (!$(fields).is(':visible')) {
          $(fields).show('fast');
          return;
        }
      }
      return alert('不能再增加更多行，已经达到上限');
    });
    form.find('i#minus').click(function() {
      return $(this).parents('.fields').hide('fast');
    });
    form.find('.dropdown.fix').dropdown({
      onChange: function(value, text, $choice) {
        if (value === 'false') {
          $(this).parent().next().find('.ui.label').text('%');
          $(this).parents('.fields').find('[name=min]').val('0').removeAttr('readonly').parent().removeClass('disabled');
          return $(this).parents('.fields').find('[name=max]').val('0').removeAttr('readonly').parent().removeClass('disabled');
        } else {
          $(this).parent().next().find('.ui.label').text('元');
          $(this).parents('.fields').find('[name=min]').val('0').attr('readonly', 'readonly').parent().addClass('disabled');
          return $(this).parents('.fields').find('[name=max]').val('0').attr('readonly', 'readonly').parent().addClass('disabled');
        }
      }
    });
    _ref = ['debit', 'cedit'];
    for (_i = 0, _len = _ref.length; _i < _len; _i++) {
      type = _ref[_i];
      rules = form.form('get value', "" + type + "_rules");
      if (rules.length > 0) {
        rules = JSON.parse(rules);
        form.form('set value', "" + type + "_rules", "");
        fields = form.find(".fields.rule." + type + ":first");
        for (index = _j = 0, _len1 = rules.length; _j < _len1; index = ++_j) {
          rule = rules[index];
          fields.show();
          fields.find('.dropdown.fix').dropdown('set selected', rule.fix);
          fields.find('[name=amt_max]').val(rule.amt_max);
          fields.find('[name=fee]').val(rule.fee);
          fields.find('[name=min]').val(rule.min);
          fields.find('[name=max]').val(rule.max);
          fields = $(fields).next('.fields.rule');
          if ($(fields).length === 0) {
            break;
          }
        }
      }
    }
    return form.submit(function(evt) {
      var _k, _len2, _ref1;
      if (!$(this).form('is valid')) {
        return evt.preventDefault();
      }
      _ref1 = ['debit', 'cedit'];
      for (_k = 0, _len2 = _ref1.length; _k < _len2; _k++) {
        type = _ref1[_k];
        rules = get_rules(form, type);
        if (!rules) {
          return evt.preventDefault();
        }
        form.form('set value', "" + type + "_rules", JSON.stringify(rules));
      }
      form.find('input[name=amt_max]').attr('disabled', 'disabled');
      form.find('select[name=fix]').attr('disabled', 'disabled');
      form.find('input[name=fee]').attr('disabled', 'disabled');
      form.find('input[name=max]').attr('disabled', 'disabled');
      return form.find('input[name=min]').attr('disabled', 'disabled');
    });
  });

}).call(this);
